With the development of network technology, SaaS (Software as a Service) has become increasingly popular in the Internet field. SaaS is a mode for providing application software through the Internet, in which software providers deploy applications on a server uniformly and tenants may subscribe desired applications from software providers through the Internet according to their practical demands and obtain applications as provided by software providers through the Internet. Unlike a traditional (on-premise) mode in which software applications are purchased and installed on the customers' computers, in SaaS mode, tenants utilize functions of desired application software by using web-based applications as subscribed from software providers. For example, tenants may utilize the web-based application for customer relationship management, online sales, commodity inventory management, order tracking, and so on.
An advantage of SaaS is that tenants do not need to maintain the software but software providers are responsible for all work related to management and maintenance of the application. In this case, tenants who rent/utilize SaaS services do not need to purchase, construct, or maintain infrastructure related to traditional applications, and they do not need to have expertise in application software maintenance; they only need to have the ability to utilize the application software.
Compared with on-premise software technology, SaaS boasts a significant difference that the application employs a multi-tenant mode during operation. Multi-tenancy is a model of software architecture; under this model, only a single instance of the application runs on servers of SaaS providers, i.e., multiple tenants of the application need to share this single instance. Multi-tenancy is relative to single-tenancy. In a single-tenant architecture, one instance of the application only serves one tenant.
To further enhance the reuse of hardware and software resources, while pursing web-based services with more powerful functionality, application providers devote more and more attention to improving the resource efficiency and how to convert the traditional single-tenant applications into applications supporting multi-tenant and to ensure the multi-tenant applications achieve resource sharing as much as possible.
However, maximizing resource sharing in the process of providing services to multiple tenants is confronted with many difficulties. Although solutions for running multiple instances of the same application have been provided in the prior art, these solutions require multiple instances to be initiated for multiple tenants in runtime, so resources still cannot be shared sufficiently (i.e., there are redundant footprints of applications initiated for each tenant). In addition, these existing solutions are not transparent to the application providers and require modifications to the original application code which usually involves huge development effort.